home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / vmsnet / qix / part03 < prev    next >
Encoding:
Text File  |  1992-02-25  |  14.5 KB  |  465 lines

  1. Newsgroups: vmsnet.sources.games
  2. Path: uunet!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!mary.fordham.edu!areid
  3. From: areid@mary.fordham.edu (Darin Reid)
  4. Subject: Qix.02 -- arcade based game
  5. Organization: Fordham University
  6. Message-ID: <25FEB199218570687@mary.fordham.edu>
  7. News-Software: VAX/VMS VNEWS 1.41    
  8. Sender: news@ctr.columbia.edu (The Daily Lose)
  9. Date: Tue, 25 Feb 1992 22:57:00 GMT
  10.  
  11. -+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+
  12. X         'q' : Y := Y + 1;
  13. X      end;
  14. X   End `7B case `7D;
  15. X   Last_X := Tmp_X;
  16. X   LAst_Y := Tmp_Y;
  17. Xend `7B Move_Anti_Clockwise`7D;
  18. X
  19. X
  20. X
  21. XProcedure Move_Clockwise(Var X,Y,Last_X,Last_Y:INteger);
  22. X
  23. XVar Tmp_X,Tmp_Y : Integer;
  24. X
  25. XBegin
  26. XTmp_X := X;
  27. XTmp_Y := Y;
  28. XCase ( Last_Y-Y) Of`20
  29. X   1 : Case  Screen`5BX,Y`5D.Sym Of`20
  30. X         'l' : X := X + 1;
  31. X         'w' : Y := Y - 1;
  32. X         't' : X := X - 1;
  33. X         'n' : X := X - 1;
  34. X         'm' : X := X - 1;
  35. X         'v' : X := X - 1;
  36. X         'q' : Y := Y - 1;
  37. X       end;
  38. X   0 : Case (Last_X-X) Of`20
  39. X         1 : Case Screen`5BX,y`5D.Sym Of`20
  40. X               'l' : Y := Y + 1;
  41. X               'w' : Y := Y + 1;
  42. X               'k' : Y := Y - 1;
  43. X               't' : Y := Y + 1;
  44. X               'n' : Y := Y + 1;
  45. X               'u' : X := X - 1;
  46. X               'x' : X := X - 1;
  47. X            end;
  48. X         0 : ;
  49. X        -1 : Case Screen`5BX,y`5D.Sym Of`20
  50. X               't' : X := X + 1;
  51. X               'n' : Y := Y - 1;
  52. X               'u' : Y := Y - 1;
  53. X               'm' : Y := Y + 1;
  54. X               'v' : Y := Y - 1;
  55. X               'j' : Y := Y - 1;
  56. X               'x' : X := X + 1;
  57. X            end;
  58. X         end;
  59. X  -1 : Case Screen`5BX,Y`5D.Sym Of`20
  60. X         'w' : X := X + 1;
  61. X         'k' : X := X + 1;
  62. X         'n' : X := X + 1;
  63. X         'u' : X := X + 1;
  64. X         'v' : Y := Y + 1;
  65. X         'j' : X := X - 1;
  66. X         'q' : Y := Y + 1;
  67. X      end;
  68. X   End `7B case `7D;
  69. X   Last_X := Tmp_X;
  70. X   LAst_Y := Tmp_Y;
  71. Xend `7B Move_Clockwise`7D;
  72. X
  73. XProcedure Move_Opp_Anti_Clockwise(Var X,Y,Last_X,Last_Y : Integer);
  74. X
  75. XVar Tmp_X,Tmp_Y : Integer;
  76. X
  77. XBegin
  78. XIf Screen`5BX,y`5D.Sym = 'n' Then Begin
  79. X      Tmp_X := X;
  80. X      Tmp_Y := Y;
  81. X      Y  := Y + (Y-Last_Y);
  82. X      X  := X + (X-Last_X);
  83. X      Last_X := Tmp_X;
  84. X      Last_Y := Tmp_Y;
  85. Xend Else
  86. X   Move_Clockwise(X,Y,Last_X,Last_Y);
  87. Xend;
  88. X
  89. XProcedure Move_Opp_Clockwise(Var X,Y,Last_X,Last_Y : Integer);
  90. X
  91. XVar Tmp_X,Tmp_Y : Integer;
  92. X
  93. XBegin
  94. XIf Screen`5BX,y`5D.Sym = 'n' Then Begin
  95. X      Tmp_X := X;
  96. X      Tmp_Y := Y;
  97. X      Y  := Y + (Y-Last_Y);
  98. X      X  := X + (X-Last_X);
  99. X      Last_X := Tmp_X;
  100. X      Last_Y := Tmp_Y;
  101. Xend Else
  102. X   Move_anti_Clockwise(X,Y,Last_X,Last_Y);
  103. Xend;
  104. X
  105. X
  106. X
  107. X
  108. XProcedure Move_Greeblys;
  109. X
  110. XVar Tmp : Integer;
  111. X
  112. XProcedure Jump_Greeb(Var Sudo_X,Sudo_Y,LSudo_X,LSudo_Y : Integer);
  113. X
  114. X
  115. X
  116. XBegin
  117. X   Sudo_X := Snake_Head_X;
  118. X   Sudo_Y := Snake_Head_Y;
  119. X   While Not ( Screen`5BSudo_X,Sudo_Y`5D.Wall In `5BCreated,Inside`5D) Do`20
  120. X         Sudo_X := Sudo_X - 1;
  121. X   If Screen`5BSudo_X,Sudo_Y`5D.Wall =  Created Then Begin
  122. X      LSudo_X := Sudo_X;
  123. X      LSudo_Y := Sudo_Y;
  124. X      Case Screen`5BSudo_X,Sudo_Y`5D.Sym Of`20
  125. X          'm' , `20
  126. X          'v' ,
  127. X          'q' : Sudo_Y := Sudo_Y + 1;
  128. X          'j' : Sudo_X := Sudo_X - 1;
  129. X        Otherwise  Begin
  130. X            LSudo_X := Sudo_X + 1;
  131. X            LSudo_Y := Sudo_Y;
  132. X        end
  133. X      End `7B CAse `7D;
  134. X      While Screen`5BSudo_X,Sudo_Y`5D.Wall = Created Do Begin
  135. X            Move_Clockwise(Sudo_X,Sudo_Y,LSudo_X,LSudo_Y);
  136. X      end;
  137. X   end Else begin
  138. X      LSudo_X := Sudo_X;
  139. X      LSudo_Y := Sudo_Y;
  140. X      Case Screen`5BSudo_X,Sudo_Y`5D.Sym Of`20
  141. X         'm' ,
  142. X         'v' ,
  143. X         'q' : Sudo_Y := Sudo_Y + 1;
  144. X         'j' : Sudo_X := Sudo_X - 1;
  145. X       Otherwise  Begin
  146. X            LSudo_X := Sudo_X + 1;
  147. X            LSudo_Y := Sudo_Y;
  148. X       end
  149. X      End `7B CAse `7D;
  150. X   end;
  151. Xend;
  152. X
  153. X
  154. XBegin
  155. X`7BMove_Clockwise_wise_one`7D
  156. XPos(Clock_Greeb_X,Clock_Greeb_Y,Screen`5BClock_Greeb_X,Clock_Greeb_Y`5D.Sym)
  157. V;
  158. XIf Screen`5BClock_Greeb_X,Clock_Greeb_Y`5D.Wall = Inside  Then  Begin
  159. X   If Screen`5BLast_Clock_Greeb_X,Last_Clock_Greeb_Y`5D.Wall = Outside Then
  160. V  Begin
  161. X      Marked_Clock_Greeb := False;
  162. X      Move_Opp_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Last
  163. V_Clock_Greeb_Y)
  164. X   end Else Begin
  165. X      If Marked_Clock_Greeb Then Begin
  166. X         If Num_Marked_Clock_Greeb > 80 Then begin
  167. X            Marked_Clock_Greeb := False;
  168. X            Move_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,La
  169. Vst_Clock_Greeb_Y);
  170. X         end else begin
  171. X`09    Num_Marked_Clock_Greeb := Num_Marked_Clock_Greeb + 1;
  172. X            If ( Clock_Greeb_X = Marked_Clock_Greeb_X ) and ( Clock_Greeb_Y
  173. V = Marked_Clock_Greeb_Y ) Then Begin
  174. X               Marked_Clock_Greeb := False;
  175. X               Jump_Greeb(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Las
  176. Vt_Clock_Greeb_Y)
  177. X            end else`20
  178. X                Move_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_
  179. VX,Last_Clock_Greeb_Y);
  180. X         end`20
  181. X      end else`20
  182. X         Move_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Last_
  183. VClock_Greeb_Y);
  184. X   end
  185. Xend else
  186. X   If Screen`5BClock_Greeb_X,Clock_Greeb_Y`5D.Wall = Created   Then`20
  187. X      Move_Opp_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Last
  188. V_Clock_Greeb_Y)
  189. X   Else Begin
  190. X      If Marked_Clock_Greeb Then Begin
  191. X`09If ( Clock_Greeb_X = Marked_Clock_Greeb_X ) And ( Clock_Greeb_Y = Marked_
  192. VClock_Greeb_Y) Then Begin
  193. X            Marked_Clock_Greeb := False;
  194. X            Jump_Greeb(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Last_C
  195. Vlock_Greeb_Y)
  196. X        end else
  197. X            Move_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,La
  198. Vst_Clock_Greeb_Y)
  199. X      End Else
  200. X         Move_Clockwise(Clock_Greeb_X,Clock_Greeb_Y,Last_Clock_Greeb_X,Last_
  201. VClock_Greeb_Y);
  202. X   end;
  203. XPos(Clock_Greeb_X,Clock_Greeb_Y,'*');
  204. XIf (You_X=Clock_Greeb_X) and (You_Y=Clock_Greeb_Y) Then`20
  205. X      Died := True;
  206. X`7BMove AntiClockwise One `7D
  207. XPos(Anti_Greeb_X,Anti_Greeb_Y,Screen`5BAnti_Greeb_X,Anti_Greeb_Y`5D.Sym);
  208. XIf Screen`5BAnti_Greeb_X,Anti_Greeb_Y`5D.Wall = Inside  Then  Begin
  209. X   If Screen`5BLast_Anti_Greeb_X,Last_Anti_Greeb_Y`5D.Wall = Outside Then Be
  210. Vgin
  211. X      Marked_Anti_Greeb := False;
  212. X      Move_Opp_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,La
  213. Vst_Anti_Greeb_Y)
  214. X   End Else`20
  215. X      If Marked_Anti_Greeb Then Begin
  216. X         If Num_Marked_Anti_Greeb > 80 Then begin
  217. X            Marked_Anti_Greeb := False;
  218. X            Move_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,
  219. VLast_Anti_Greeb_Y)
  220. X         end else begin
  221. X`09    Num_Marked_Anti_Greeb := Num_Marked_Anti_Greeb + 1;
  222. X            If ( Anti_Greeb_X = Marked_Anti_Greeb_X ) and ( Anti_Greeb_Y = M
  223. Varked_Anti_Greeb_Y ) Then Begin
  224. X               Marked_Anti_Greeb := False;
  225. X               Jump_Greeb(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,Last_A
  226. Vnti_Greeb_Y);
  227. X               Tmp := Anti_Greeb_X;
  228. X               Anti_Greeb_X := Last_Anti_Greeb_X;
  229. X               Last_Anti_Greeb_X := Tmp;
  230. X               Tmp := Anti_Greeb_Y;
  231. X               Anti_Greeb_Y := Last_Anti_Greeb_Y;
  232. X               Last_Anti_Greeb_Y := Tmp;
  233. X            end else`20
  234. X               Move_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb
  235. V_X,Last_Anti_Greeb_Y)
  236. X         end`20
  237. X      end else`20
  238. X         Move_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,Las
  239. Vt_Anti_Greeb_Y)
  240. Xend else
  241. X   If Screen`5BAnti_Greeb_X,Anti_Greeb_Y`5D.Wall = Created Then`20
  242. X      Move_Opp_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,La
  243. Vst_Anti_Greeb_Y)
  244. X   Else Begin
  245. X      If Marked_Anti_Greeb Then Begin
  246. X`09If ( Anti_Greeb_X = Marked_Anti_Greeb_X ) And ( Anti_Greeb_Y = Marked_Ant
  247. Vi_Greeb_Y) Then Begin
  248. X            Marked_Anti_Greeb := False;
  249. X            Jump_Greeb(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,Last_Anti
  250. V_Greeb_Y);
  251. X            Tmp := Anti_Greeb_X;
  252. X            Anti_Greeb_X := Last_Anti_Greeb_X;
  253. X            Last_Anti_Greeb_X := Tmp;
  254. X            Tmp := Anti_Greeb_Y;
  255. X            Anti_Greeb_Y := Last_Anti_Greeb_Y;
  256. X            Last_Anti_Greeb_Y := Tmp;
  257. X        end else
  258. X            Move_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,
  259. VLast_Anti_Greeb_Y);
  260. X      End Else`20
  261. X         Move_Anti_Clockwise(Anti_Greeb_X,Anti_Greeb_Y,Last_Anti_Greeb_X,Las
  262. Vt_Anti_Greeb_Y);
  263. X   end;
  264. XPos(Anti_Greeb_X,Anti_Greeb_Y,'*');
  265. XIf (You_X=Anti_Greeb_X) and (You_Y=Anti_Greeb_Y) Then`20
  266. X      Died := True;
  267. XIf Moving_Extra_Greebly Then Begin
  268. X   Pos(Extra_Greeb_X,Extra_Greeb_Y,Screen`5BExtra_Greeb_X,Extra_Greeb_Y`5D.S
  269. Vym);
  270. X   If Dir_When_Start_Creat = Clockwise Then`20
  271. X      Move_ClockWise(Extra_Greeb_X,Extra_Greeb_Y,Last_Extra_Greeb_X,Last_Ext
  272. Vra_Greeb_Y)
  273. X   Else
  274. X      Move_Anti_ClockWise(Extra_Greeb_X,Extra_Greeb_Y,Last_Extra_Greeb_X,Las
  275. Vt_Extra_Greeb_Y);
  276. X   Pos(Extra_Greeb_X,Extra_Greeb_Y,'*');
  277. X   If (You_X=Extra_Greeb_X) And (You_Y =Extra_Greeb_Y) Then
  278. X      Died := True
  279. X   Else begin
  280. X      Pos(Extra_Greeb_X,Extra_Greeb_Y,Screen`5BExtra_Greeb_X,Extra_Greeb_Y`5
  281. VD.Sym);
  282. X      If Dir_When_Start_Creat = Clockwise Then`20
  283. X         Move_ClockWise(Extra_Greeb_X,Extra_Greeb_Y,Last_Extra_Greeb_X,Last_
  284. VExtra_Greeb_Y)
  285. X      Else
  286. X         Move_Anti_ClockWise(Extra_Greeb_X,Extra_Greeb_Y,Last_Extra_Greeb_X,
  287. VLast_Extra_Greeb_Y);
  288. X      Pos(Extra_Greeb_X,Extra_Greeb_Y,'*');
  289. X      If (You_X=Extra_Greeb_X) And (You_Y =Extra_Greeb_Y) Then`20
  290. X         Died := True;
  291. X   end;
  292. Xend;
  293. Xend;
  294. X
  295. X
  296. X
  297. XProcedure Move_Snake;
  298. X
  299. XVar tmp,cnt: Integer;
  300. X    Save_ch : Char;
  301. X    Swaped_head : Boolean;
  302. X    Dist_From_Head,
  303. X    Dist_From_Tail : Integer;
  304. X
  305. XProcedure Get_Move_For_Snake ;
  306. X
  307. X
  308. XProcedure Swap_snake_head_and_Tail;
  309. X
  310. XVar Tmp_Tail_X,Tmp_Tail_Y : Integer;
  311. X
  312. Xbegin
  313. X   Swaped_Head := True;
  314. X   Moves_since_stuck := 0;
  315. X   Snake_Got_stuck := False;
  316. X   Tmp_Tail_X := Snake_Tail_X;
  317. X   Tmp_Tail_Y := Snake_Tail_Y;
  318. X   Screen`5BSnake_Head_X,Snake_Head_Y`5D.Wall := Other;
  319. X   Screen`5BSnake_Head_X,Snake_Head_Y`5D.Sym  := Blank;
  320. X   pos(Snake_Head_X,Snake_Head_Y,Blank);
  321. X   If ( Screen`5BSnake_Head_X,Snake_Head_Y+1`5D.Wall = Snake ) and`20
  322. X      ( Screen`5BSnake_Head_X,Snake_Head_Y+1`5D.Sym in `5B'q','k','j'`5D ) T
  323. Vhen begin
  324. X      Snake_Tail_X := Snake_Head_X;
  325. X      Snake_Tail_Y := Snake_Head_Y+1;
  326. X   end else
  327. X      If ( Screen`5BSnake_Head_X,Snake_Head_Y-1`5D.Wall = Snake ) and`20
  328. X         ( Screen`5BSnake_Head_X,Snake_Head_Y-1`5D.Sym in `5B'q','l','m'`5D
  329. V ) Then begin
  330. X         Snake_Tail_X := Snake_Head_X;
  331. X         Snake_Tail_Y := Snake_Head_Y-1;
  332. X      end else
  333. X         If ( Screen`5BSnake_Head_X+1,Snake_Head_Y`5D.Wall = Snake ) and`20
  334. X            ( Screen`5BSnake_Head_X+1,Snake_Head_Y`5D.Sym in `5B'x','m','j'`
  335. V5D ) Then begin
  336. X            Snake_Tail_X := Snake_Head_X+1;
  337. X            Snake_Tail_Y := Snake_Head_Y;
  338. X         end else
  339. X            If ( Screen`5BSnake_Head_X-1,Snake_Head_Y`5D.Wall = Snake ) and`
  340. V20
  341. X               ( Screen`5BSnake_Head_X-1,Snake_Head_Y`5D.Sym in `5B'x','l','
  342. Vk'`5D ) Then begin
  343. X               Snake_Tail_X := Snake_Head_X-1;
  344. X               Snake_Tail_Y := Snake_Head_Y;
  345. X            end;
  346. X   Snake_Head_X := Tmp_Tail_X;
  347. X   Snake_Head_Y := Tmp_Tail_Y;
  348. X   Screen`5BSnake_Head_X,Snake_Head_Y`5D.Sym := Blank;
  349. X   Screen`5BSnake_Head_X,Snake_Head_Y`5D.Wall := Snake;
  350. X   pos(Snake_Head_X,Snake_Head_Y,Qix_Head);
  351. X   Len_Snake := Len_Snake - 1;
  352. Xend;
  353. X
  354. X
  355. XFunction Sgn(X:Integer):Integer;
  356. X
  357. XBegin
  358. X   If X > 0 Then`20
  359. X      Sgn := 1
  360. X   else
  361. X      If X < 0 Then`20
  362. X         Sgn := -1
  363. X      Else`20
  364. X         Sgn := 0;
  365. Xend;
  366. X
  367. XProcedure Search_For_Move;
  368. X
  369. XVar X,Y,XX,YY,Dist,Closest : Integer;
  370. X
  371. XBegin
  372. X   Num_Snake_Searched := Num_Snake_Searched  + 1;
  373. X   Snake_Move_X := 0;
  374. X   Snake_Move_Y := 0;
  375. X   X := 0;
  376. X   Y := 0;
  377. X
  378. X   Closest := 999999;
  379. X   For Xx := 1 To 4 do   begin
  380. X      Case Xx of`20
  381. X         1 : Y := 1;
  382. X         2 : Y := -1;
  383. X         3 : Begin
  384. X               Y := 0;
  385. X               X := 1;
  386. X             end;
  387. X         4 : X := -1 ;
  388. X      end;
  389. X      Dist := (((Snake_Head_X + X ) - Snake_After_X))**2`20
  390. X               + ((Snake_Head_Y + Y ) - Snake_After_Y)**2;
  391. X      If Dist < Closest Then`20
  392. X         If (( X + Y ) <> 0 )  and`20
  393. X            ( Screen`5BSnake_Head_X+X,Snake_Head_Y+Y`5D.wall in `5BCreated,O
  394. Vther`5D ) and`20
  395. X            ( Not (( Snake_Head_X+X = Start_Creat_X ) and ( Snake_Head_Y+Y =
  396. V Start_Creat_Y))) Then Begin
  397. X               Snake_Move_X := X;
  398. X               Snake_Move_Y := Y;
  399. X               Closest := Dist;
  400. X         end;
  401. X   end;
  402. Xend;
  403. X
  404. X
  405. X
  406. X
  407. X
  408. XBegin
  409. X   If Creating_wall Then  begin
  410. X      If ( Num_Snake_Searched  > ( 10 + Rand(10))) And
  411. X         ( Moves_Since_stuck > 15 ) Then Begin
  412. X         Num_Snake_Searched := 0;  `20
  413. X         Swap_Snake_Head_and_Tail;
  414. X         Snake_After_X := You_X;
  415. X         Snake_After_Y := You_Y;
  416. X      end else begin
  417. X         Dist_from_Tail := (( Snake_Tail_X - Snake_After_X )**2 )+`20
  418. X                           (( Snake_Head_Y - Snake_After_Y )**2 );
  419. X         If (( Snake_Head_X - Snake_After_X )**2 +`20
  420. X            ( Snake_Head_Y - Snake_After_Y )**2 ) > ( Dist_From_Tail*2 ) The
  421. Vn`20
  422. X            If ( Moves_since_Stuck > 10 ) and ( Len_snake > 10 ) and
  423. X               ( dist_from_tail > 10 ) Then`20
  424. X                  Swap_Snake_Head_and_Tail;
  425. X         If (( You_X - Snake_Head_X ) ** 2 + ( You_Y - Snake_Head_Y)**2 ) <
  426. X            (( Snake_Head_X - Snake_After_X )**2 + ( Snake_Head_Y - Snake_Af
  427. Vter_Y )**2 ) Then Begin
  428. X            Num_Snake_Searched := 0;
  429. X            Snake_After_X := You_X;
  430. X            Snake_After_Y := You_Y;
  431. X         end;
  432. X      end;
  433. X   end Else begin
  434. X       Num_Snake_Searched := 0;
  435. X       If Num_MOves_After_This_Pt > ( 10 + Rand(10)) Then Begin
  436. X         Snake_After_X :=  Rand(21);
  437. X         Snake_After_Y :=  Rand(78);
  438. X         Num_Moves_After_This_Pt := 0;
  439. X      end else
  440. X         Num_Moves_After_This_Pt := Num_Moves_After_This_Pt  + 1;
  441. X   end;
  442. X   If Not Snake_Got_Stuck Then Begin
  443. X         Snake_Move_X := 0;
  444. X         Snake_Move_Y := 0;
  445. X         If Rand(4) = 1 then Begin
  446. X            Snake_Move_X := Sgn(Snake_After_X - Snake_Head_X);
  447. X            If Snake_Move_X = 0 Then`20
  448. X               Snake_Move_Y := Sgn(Snake_After_Y - Snake_Head_Y);
  449. X         end else begin
  450. X            Snake_Move_Y := Sgn(Snake_After_Y - Snake_Head_Y);
  451. X            If Snake_Move_Y = 0 Then`20
  452. X               Snake_Move_X := Sgn(Snake_After_X - Snake_Head_X);
  453. X         end;
  454. X      If (( Snake_Move_X + Snake_Move_Y ) = 0 ) or`20
  455. X         ( Not ( Screen`5BSnake_Head_X+Snake_Move_X,Snake_Head_Y+Snake_Move_
  456. VY`5D.wall in `5BCreated,Other`5D )) or`20
  457. +-+-+-+-+-+-+-+-  END  OF PART 2 +-+-+-+-+-+-+-+-
  458.  
  459.  
  460. __________
  461. Darin Reid
  462. Internet: Areid@Mary.Fordham.Edu
  463. Bitnet: Areid@Fordmulc
  464. Phone: (212) 749-8187
  465.